﻿//Ext.require(['Ext.grid.*', 'Ext.data.*', 'Ext.util.*', 'Ext.state.*']);

Ext.onReady(function() {
	Ext.QuickTips.init();
	Ext.Ajax.request({
		url : 'jsp/dycolumn-list.jsp',
		params : 'method=自己的方法',
		method : 'POST',
		success : function(rs, request) {
			var result = rs.responseText;// 拿到结果集，此时为字符串
			var json = Ext.util.JSON.decode(result);// 将字符串转换为json类型
			var cm = json.columModle;// new Ext.grid.ColumnModel(json.columModle);
			//
//			var ds = Ext.create('Ext.data.Store', {
//						fields : json.fieldsNames,
//						data : json.data,
//						proxy : {
//							type : 'memory',
//							reader : {
//								type : 'json',
//								root : 'data'
//							}
//						}
//					});
var ds = new Ext.data.JsonStore({
data:json.data,
fields:json.fieldsNames
});

    // manually load local data
    //ds.loadData(json.data);


			var grid = new Ext.grid.GridPanel({
						region : 'center',
						split : true,
						border : false,
						columns : cm,
						store : ds
					});

			// form start
			var form = new Ext.form.FormPanel({
				title : '编辑学生信息',
				region : 'east',
				frame : true,
				width : 300,
				autoHeight : true,
				labelAlign : 'right',
				labelWidth : 60,
				defaultType : 'textfield',
				defaults : {
					width : 200,
					allowBlank : false
				},
				items :[{
							xtype : 'hidden',
							name : 'id'
						}, {
							fieldLabel : '学号',
							name : 'code'
						}, {
							fieldLabel : '姓名',
							name : 'name'
						}, {
							fieldLabel : '年龄',
							name : 'age',
							xtype : 'numberfield',
							allowNegative : false
						}, {
							fieldLabel : '性别',
							name : 'sexText',
							hiddenName : 'sex',
							xtype : 'combo',
							store : new Ext.data.SimpleStore({
										fields : ['value', 'text'],
										data : [['1', '男'], ['2', '女']]
									}),
							emptyText : '请选择',
							mode : 'local',
							triggerAction : 'all',
							valueField : 'value',
							displayField : 'text',
							readOnly : true
						}, {
							fieldLabel : '政治面貌',
							name : 'political',
							xtype : 'combo',
							store : new Ext.data.SimpleStore({
										fields : ['text'],
										data : [['群众'], ['党员'], ['团员']]
									}),
							emptyText : '请选择',
							mode : 'local',
							triggerAction : 'all',
							valueField : 'text',
							displayField : 'text',
							readOnly : true
						}, {
							fieldLabel : '籍贯',
							name : 'origin'
						}, {
							fieldLabel : '所属系',
							name : 'professional'
						}],
				buttons : [{
					text : '添加',
					handler : function() {
						if (!form.getForm().isValid()) {
							return;
						}
						if (form.getForm().findField("id").getValue() == "") {
							// 添加
							form.getForm().submit({
								url : './jsp/save.jsp',
								success : function(f, action) {
									if (action.result.success) {
										Ext.Msg.alert('消息', action.result.msg,
												function() {
													grid.getStore().reload();
													form.getForm().reset();
													form.buttons[0]
															.setText('添加');
												});
									}
								},
								failure : function() {
									Ext.Msg.alert('错误', "添加失败");
								}
							});
						} else {
							// 修改
							form.getForm().submit({
								url : './jsp/save.jsp',
								success : function(f, action) {
									if (action.result.success) {
										Ext.Msg.alert('消息', action.result.msg,
												function() {
													grid.getStore().reload();
													form.getForm().reset();
													form.buttons[0]
															.setText('添加');
												});
									}
								},
								failure : function() {
									Ext.Msg.alert('错误', "修改失败");
								}
							});
						}
					}
				}, {
					text : '清空',
					handler : function() {
						form.getForm().reset();
						form.buttons[0].setText('添加');
					}
				}, {
					text : '删除',
					handler : function() {
						var id = form.getForm().findField('id').getValue();
						if (id == '') {
							Ext.Msg.alert('提示', '请选择需要删除的信息。');
						} else {
							Ext.Ajax.request({
										url : './jsp/remove.jsp',
										success : function(response) {
											var json = Ext
													.decode(response.responseText);
											if (json.success) {
												Ext.Msg.alert('消息', json.msg,
														function() {
															grid.getStore()
																	.reload();
															form.getForm()
																	.reset();
															form.buttons[0]
																	.setText('添加');
														});
											}
										},
										failure : function() {
											Ext.Msg.alert('错误', "删除失败");
										},
										params : "id=" + id
									});
						}
					}
				}]
			});
			// form end*/

			// 单击修改信息 start
			grid.on('rowclick', function(grid, rowIndex, event) {
						var record = grid.getStore().getAt(rowIndex);
						form.getForm().loadRecord(record);
						form.buttons[0].setText('修改');
					});
			// 单击修改信息 end

			// 修改列头 start
			grid.on('beforerender', function() {
						/*
						 * for (var i=0; i<headerstore.getCount() ; i++){ //var
						 * index =
						 * columns.getColumnCount();//findColumnIndex("学号"); var
						 * d = headerstore.getAt(i);
						 * columns.setColumnHeader(i,d.get('text')?d.get('text'):getColumnHeader(i)); }
						 */
					});
			// 修改列头 end

			// layout start
//			Ext.create('Ext.container.Viewport', {
		var viewport = new Ext.Viewport( {
						layout : 'border',
						items : [{
									region : 'north',
									contentEl : 'head'
								}, grid,form, {
									region : 'south',
									contentEl : 'foot'
								}],
						renderTo : Ext.getBody()
					});
			// layout end

		},
		failure : function(rs, request) {
		}
	});

});
